#pragma once
#include <string>
#include "Xps/Object/IObjectFactory.h"
#include "Xps/Tasks/ITask.h"

namespace Xps
{
    class Task :
        public ITask
    {
    public:
        typedef boost::shared_ptr<Task> Ptr;

        Task(const std::string &_Name);

        virtual ~Task(void);

        virtual const std::string & getName() const;

        virtual bool IsSubscribedToProtocol( const std::string &_ProtocolName );

        virtual void Perform( const std::string &_ProtocolName, const IObject *_Object );

    protected:
        const IObjectFactory *object_factory;
        std::string name;
    };
};